package com.xiaoshuidi.cloud.module.contract.dal.dataobject.contract;

import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xiaoshuidi.cloud.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.time.LocalDateTime;

import static com.xiaoshuidi.cloud.framework.common.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;

/**
 * 结算单明细 DO
 *
 * @author 合房租赁
 */
@TableName("contract_settlement_detail")
@KeySequence("contract_settlement_detail_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class SettlementDetailDO extends BaseDO {

    /**
     * 结算单明细表
     */
    @TableId
    private Long id;
    /**
     * 结算单id
     */
    private Long settlementId;
    /**
     * 费项编号(关联Fee表)
     */
    private Long feeId;

    /**
     * 费项名称
     */
    private String feeName;

    /**
    * 账单金额
    * */
    private BigDecimal amount;

    /**
    * 收退款 金额
    * */
    private BigDecimal refundableAmount;

    /**
     * 账单开始时间
     * */
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime orderStartDate;

    /**
     * 账单结束时间
     * */
    @DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
    private LocalDateTime orderEndDate;
    /**
    * 扩展字段
    * */
    private String extension;
    /**
     * 资金流向 out 流出| in 流入
     * */
    private String flowType;

    /**
    * 备注
    * */
    private String remark;

    /**
     * 费项类型 0预付费 1智能水电表 2资产 3合同账单
     * */
    private String detailType;
}
